package com.houweishi.module.wageOperateHistroy.domain;

import com.fasterxml.jackson.annotation.JsonFormat;
import com.houweishi.common.annotation.Excel;
import com.houweishi.common.core.domain.BaseEntity;
import lombok.Data;
import org.apache.commons.lang3.builder.ToStringBuilder;
import org.apache.commons.lang3.builder.ToStringStyle;

import java.math.BigDecimal;
import java.util.Date;

/**
 * 工资计算历史对象 hws_wage_operate_history
 * 
 * @author yqq
 * @date 2023-06-26
 */
@Data
public class WageOperateHistory extends BaseEntity
{
    private static final long serialVersionUID = 1L;

    /** 主键ID */
    private Long id;

    /** 部门 */
    @Excel(name = "部门")
    private String departmentName;

    /** 考勤年月 */
    @Excel(name = "考勤年月")
    private String attendanceDate;

    /** 是否公开 */
    @Excel(name = "是否公开")
    private String isPublic;

    /** 部门id */
    @Excel(name = "部门id")
    private Long departmentId;

    /** 公司 */
    @Excel(name = "公司")
    private String company;

    /** 岗位id */
    @Excel(name = "岗位id")
    private Long postId;

    /** 岗位名称 */
    @Excel(name = "岗位名称")
    private String postName;

    /** 姓名 */
    @Excel(name = "姓名")
    private String staffName;

    /** 姓名id */
    @Excel(name = "姓名id")
    private Long staffId;

    /** 姓名 */
    @Excel(name = "用户名")
    private String userName;

    /** 姓名id */
    @Excel(name = "用户id")
    private Long userId;

    /** 入职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "入职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date entryDate;

    /** 离职日期 */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "离职日期", width = 30, dateFormat = "yyyy-MM-dd")
    private Date leaveDate;

    /** 员工状态 */
    @Excel(name = "员工状态")
    private String staffState;

    /** 员工类型 */
    @Excel(name = "员工类型")
    private String staffType;

    /** 基本工资 */
    @Excel(name = "基本工资")
    private BigDecimal basieWage;

    /** 岗位津贴 */
    @Excel(name = "岗位津贴")
    private BigDecimal postAllowance;

    /** 忠诚奖励 */
    @Excel(name = "忠诚奖励")
    private BigDecimal loyaltyReward;

    /** 技能考核 */
    @Excel(name = "技能考核")
    private BigDecimal skillAssessment;

    /** 管理考核 */
    @Excel(name = "管理考核")
    private BigDecimal managementAssessment;

    /** 安全奖 */
    @Excel(name = "安全奖")
    private BigDecimal safetyAward;

    /** 绩效 */
    @Excel(name = "绩效")
    private BigDecimal performance;

    /** 全勤 */
    @Excel(name = "全勤")
    private BigDecimal fullAttendance;

    /** 出勤天数 */
    @Excel(name = "出勤天数")
    private Integer attendanceDays;

    /** 出勤工资 */
    @Excel(name = "出勤工资")
    private BigDecimal attendanceWage;

    /** 专项补贴 */
    @Excel(name = "专项补贴")
    private BigDecimal specialSubsidy;

    /** 应发工资 */
    @Excel(name = "应发工资")
    private BigDecimal payDue;

    /** 社保 */
    @Excel(name = "社保")
    private BigDecimal socialSecurity;

    /** 个税 */
    @Excel(name = "个税")
    private BigDecimal personalIncomeTax;

    /** 罚款 */
    @Excel(name = "罚款")
    private BigDecimal fine;

    /** 其他 */
    @Excel(name = "其他")
    private BigDecimal other;

    /** 实发工资 */
    @Excel(name = "实发工资")
    private BigDecimal realWages;

    /** 内部备注 */
    @Excel(name = "内部备注")
    private String internalNotes;

    /** 删除标志（0代表存在 2代表删除） */
    private String delFlag;

    @Override
    public String toString() {
        return new ToStringBuilder(this,ToStringStyle.MULTI_LINE_STYLE)
            .append("id", getId())
            .append("departmentName", getDepartmentName())
            .append("attendanceDate", getAttendanceDate())
            .append("isPublic", getIsPublic())
            .append("departmentId", getDepartmentId())
            .append("company", getCompany())
            .append("postId", getPostId())
            .append("postName", getPostName())
            .append("staffName", getStaffName())
            .append("staffId", getStaffId())
            .append("entryDate", getEntryDate())
            .append("leaveDate", getLeaveDate())
            .append("staffState", getStaffState())
            .append("staffType", getStaffType())
            .append("basieWage", getBasieWage())
            .append("postAllowance", getPostAllowance())
            .append("loyaltyReward", getLoyaltyReward())
            .append("skillAssessment", getSkillAssessment())
            .append("managementAssessment", getManagementAssessment())
            .append("safetyAward", getSafetyAward())
            .append("performance", getPerformance())
            .append("fullAttendance", getFullAttendance())
            .append("attendanceDays", getAttendanceDays())
            .append("attendanceWage", getAttendanceWage())
            .append("specialSubsidy", getSpecialSubsidy())
            .append("payDue", getPayDue())
            .append("socialSecurity", getSocialSecurity())
            .append("personalIncomeTax", getPersonalIncomeTax())
            .append("fine", getFine())
            .append("other", getOther())
            .append("realWages", getRealWages())
            .append("internalNotes", getInternalNotes())
            .append("delFlag", getDelFlag())
            .append("createBy", getCreateBy())
            .append("createTime", getCreateTime())
            .append("updateBy", getUpdateBy())
            .append("updateTime", getUpdateTime())
            .append("remark", getRemark())
            .toString();
    }
}
